Magnetic storage systems such as disk drives include a magnetic medium or platter with a magnetic coating that is divided into data tracks. The data tracks are divided into data sectors that store fixed-sized data blocks. A read/write head typically includes a write circuit and write element such as an inductor that selectively generates positive and negative magnetic fields that are stored by the magnetic medium. The stored positive and negative fields represent binary ones and zeros. The read/write head includes an element such as a magneto-resistive element that senses the stored magnetic field to read data from the magnetic medium. A spindle motor rotates the platter and an actuator arm positions the read/write head relative to the magnetic medium.
Magnetic storage systems typically code the user data using Run Length Limited (RLL) code. RLL coding reduces sequences in the user data that may cause problems with timing circuits of the magnetic storage system. For example, RLL code may enforce constraints on the number of consecutive ones and/or zeros that are allowed to occur in the data. The efficiency of the RLL code is typically measured in terms of a code rate. For every m-bits or m-bytes of user data, an n-bit or n-byte encoded word is written to the storage media. RLL codes are used to eliminate unwanted bit patterns in the original data and typically do not have error correction capability. RLL coding, however, reduces data storage capacity by increasing channel bit density (CBD), which reduces a signal to noise ratio (SNR) and may lead to lower data reliability.
Referring now to FIG. 1, a write-path of a data storage system with RLL coding is shown. A host bus interface (HBI) 14 receives a user data sequence from a host computer 16. For example, the user data sequence may include 4096 bits of a sector, which are arranged in 410 10-bit symbols. A buffer manager (BM) 18 stores the user data sequence in a buffer 20 and then sends the user data sequence from the buffer 20 to a disk formatter (DF) 22 with proper timing. An ECC/CRC encoder 24 appends CRC and ECC bits to the user data sequence.
The ECC bits are computed based on the user data sequence and the CRC bits. A scrambler 26 generates a pseudo-random sequence that is based on a polynomial and seed. The user data sequence and the scrambler sequence are then input to an XOR gate 27, which outputs a scrambled user data sequence. A RLL encoder 28 is used to constrain the unwanted bit patterns in the scrambled sequence.
To increase SNR and data storage capacity, data storage systems were developed without RLL coding using data-dependent scramblers (DDS). Data is processed by the DDS to eliminate unwanted bit patterns. The DDS is disclosed in “Improved Data Coding For Enforcing Constraints On Ones and Zeros In a Communications Channel”, U.S. patent application Ser. No. 10/423,552, filed Apr. 25, 2003, which is commonly assigned and is hereby incorporated by reference in its entirety. The scrambled user data sequence from the DDS is forwarded to an ECC/CRC device, which generates and appends CRC and ECC bits to the scrambled user data.
Because the CRC and ECC bits that are generated may also contain unwanted bit patterns, traditional RLL coding may be used to encode the ECC/CRC portion. The data storage system is still referred to as being without RLL coding because the CRC and/or ECC bits are relatively small in number as compared to the number of bits in the user data sequence.
The data storage system using the DDS provides a global constraint (G) (i.e., longest length of a run of consecutive zeros) of 2*M, where M is the symbol size (e.g., 10-bits). Such a data storage system further provides an interleave constraint (I) (i.e., longest run of consecutive zeros in an interleaved subsequence) of 2*(M−1). In the case of a 10-bit symbol size, the G/I constraint is 20/18. However, the maximum number of consecutive ones is 4*M−2. In the case of a 10-bit symbol size, the maximum length of ones can be up to 38. It is desirable to reduce the maximum number of consecutive ones while maintaining the G/I constraint.